Objetivo de aprendizaje
Dominar la creación, organización y uso de módulos y paquetes en Python para desarrollar programas modulares, escalables y mantenibles, integrando competencias técnicas como la importación de bibliotecas, habilidades cognitivas de análisis y síntesis para estructurar soluciones, y actitudes de curiosidad y colaboración que permitan construir software ético y socialmente relevante para la comunidad educativa ecuatoriana.
Contextualización
Imagina que estás organizando la biblioteca de tu colegio. Tienes miles de libros: algunos son de matemáticas, otros de historia, algunos de literatura. ¿Los pondrías todos juntos en una sola pila? Por supuesto que no. Los organizarías por materias, por autores, por años... crearías un sistema.
Así funciona Python con los módulos y paquetes. Cada vez que escribes un programa, estás creando conocimiento. Y como en cualquier biblioteca, ese conocimiento necesita organización. Cuando programas, no estás solo escribiendo código; estás creando un ecosistema digital que, bien organizado, puede crecer, evolucionar y servir a otros.
En el Ecuador digital de hoy, donde las soluciones tecnológicas locales son cada vez más necesarias, aprender a estructurar código no es solo una habilidad técnica: es una forma de pensar sistémicamente, de construir soluciones que perduren y se adapten, de crear herramientas que realmente sirvan a nuestra comunidad.
Desarrollo de la actividad
Un módulo en Python es simplemente un archivo con extensión .py que contiene código Python. Un paquete es una carpeta que contiene varios módulos organizados jerárquicamente.
Creando tu primer módulo
Vamos a crear un módulo para operaciones matemáticas básicas con sabor ecuatoriano:
# modulo_matematicas_ec.py # Módulo con operaciones matemáticas inspiradas en Ecuador def calcular_iva(monto, porcentaje=12): """Calcula el IVA de un monto (por defecto 12% como en Ecuador)""" return monto * porcentaje / 100 def convertir_dolares_a_sucres(dolares): """Convierte dólares a sucres (tipo de cambio fijo: 1 USD = 25000 sucres)""" return dolares * 25000 def calcular_promedio_pichincha(*calificaciones): """Calcula el promedio de calificaciones (como en los colegios de Pichincha)""" if len(calificaciones) == 0: return 0 return sum(calificaciones) / len(calificaciones) # Probemos nuestro módulo internamente if __name__ == "__main__": print("Prueba del módulo:") print("IVA de $100:", calcular_iva(100)) print("$10 en sucres:", convertir_dolares_a_sucres(10)) print("Promedio de 15, 18, 20:", calcular_promedio_pichincha(15, 18, 20))
Usando nuestro módulo desde otro archivo
Ahora creamos otro archivo para importar y usar nuestro módulo:
# programa_principal.py # Importando nuestro módulo personalizado import modulo_matematicas_ec as mate_ec # También podemos importar funciones específicas from modulo_matematicas_ec import calcular_iva, convertir_dolares_a_sucres print("=== Sistema de cálculos ecuatorianos ===") # Usando el módulo con alias compra = 250 iva_calculado = mate_ec.calcular_iva(compra) print(f"Compra: ${compra}, IVA: ${iva_calculado:.2f}") # Usando funciones importadas directamente dolares = 50 sucres = convertir_dolares_a_sucres(dolares) print(f"{dolares} dólares equivalen a {sucres:,} sucres") # Usando otra función del módulo promedio = mate_ec.calcular_promedio_pichincha(16, 18, 14, 20) print(f"Promedio de calificaciones: {promedio:.1f}")
Creando un paquete
Un paquete es una carpeta que contiene un archivo especial llamado __init__.py (que puede estar vacío) y módulos relacionados:
# Estructura de un paquete ecuatoriano: # paquete_ecuador/ # __init__.py # matematicas.py # geografia.py # cultura.py # paquete_ecuador/matematicas.py def calcular_area_rectangulo(base, altura): """Calcula el área de un rectángulo""" return base * altura # paquete_ecuador/geografia.py def obtener_provincias(): """Retorna la lista de provincias de Ecuador""" return ["Azuay", "Bolívar", "Cañar", "Carchi", "Chimborazo", "Cotopaxi", "El Oro", "Esmeraldas", "Galápagos", "Guayas", "Imbabura", "Loja", "Los Ríos", "Manabí", "Morona Santiago", "Napo", "Orellana", "Pastaza", "Pichincha", "Santa Elena", "Santo Domingo", "Sucumbíos", "Tungurahua", "Zamora Chinchipe"] # programa principal usando el paquete from paquete_ecuador import geografia, matematicas print("Provincias de Ecuador:") for provincia in geografia.obtener_provincias(): print("-", provincia) area = matematicas.calcular_area_rectangulo(10, 5) print(f"Área de un rectángulo de 10x5: {area}")
Reflexión: ¿Qué ventajas ves en organizar tu código en módulos y paquetes? ¿Cómo podrías aplicar esta organización a un proyecto sobre la biodiversidad ecuatoriana o sobre el patrimonio cultural de tu provincia?
El reto final
Reto: Sistema de Gestión para el Festival de Ciencias del Colegio
Tu colegio está organizando un Festival de Ciencias y te ha encargado desarrollar un sistema modular en Python para gestionar las actividades. El sistema debe:
- Crear un paquete llamado
festival_cienciascon al menos tres módulos:registro.py: Para registrar participantes (estudiantes, profesores, proyectos)calificacion.py: Para que los jueces califiquen los proyectosreportes.py: Para generar reportes de los resultados
- Cada módulo debe contener al menos dos funciones relevantes a su propósito.
- Crear un programa principal que importe y use todos los módulos del paquete.
- Implementar al menos una función que reciba parámetros con valores por defecto.
- Incluir documentación en cada módulo explicando su propósito.
Preguntas para guiar tu solución:
- ¿Cómo estructurarías las carpetas y archivos?
- ¿Qué datos específicos del festival necesitarías manejar?
- ¿Cómo harías para que el sistema pueda crecer en futuras versiones?
- ¿Qué elementos de la cultura ecuatoriana podrías incorporar en tu diseño?
Evaluación lúdica
Test: ¿Eres un maestro de los módulos?
Responde las siguientes preguntas para demostrar tu comprensión de módulos y paquetes en Python.